/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sgeb;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 * @author Pablo Torres Alba
 */
public class Equipo {
    //La Categoria del equipo

    private String categoria;
    private int equipoID;
    private int entrenadorID;
    private String nombre;
    private int partidosGanados;
    private int partidosPerdidos;
    private int visitante;
    private String horario;

    public Equipo() {
    }
    /*Constructor*/

    public Equipo(Integer equipoID) {
	this.equipoID = equipoID;
    }

    //@brief Constructor con parametros
    public Equipo(String categoria, String nombre, int visitante, String horario, int entrenadorID) {
	this.categoria = categoria;
	this.nombre = nombre;
	this.visitante = visitante;
	this.partidosGanados = 0;
	this.partidosPerdidos = 0;
	this.horario = horario;
	this.entrenadorID = entrenadorID;
    }

    //@brief Devuelve la categoria del equipo
    public String GetHorario() {
	return this.horario;
    }

    //@brief Devuelve el nombre del equipo
    public void SetHorario(String horario) {
	this.horario = horario;
    }

    //@brief Devuelve la categoria del equipo
    public String GetCategoria() {
	return this.categoria;
    }

    //@brief Devuelve el nombre del equipo
    public String GetNombre() {
	return this.nombre;
    }

    //@brief Devuelve si el equipo es un visitante (1)
    public int GetVisitante() {
	return this.visitante;
    }

    //@brief Devuelve los partidos ganados
    public int GetPartidosGanados() {
	return this.partidosGanados;
    }

    //@brief Devuelve lospartidos perdidos
    public int GetPartidosPerdidos() {
	return this.partidosPerdidos;
    }

    //@brief Devuelve el numero de identificacion del equipo
    public int GetEquipoID() {
	return this.equipoID;
    }

    //@brief Devuelve el numero de identificacion del entrenador
    public int GetEntrenadorID() {
	return this.entrenadorID;
    }

    //@brief asigna la categoria del equipo
    public void SetCategoria(String categoria) {
	this.categoria = categoria;
    }

    //@brief asigna el nombre del equipo
    public void SetNombre(String nombre) {
	this.nombre = nombre;
    }

    //@brief asigna si el equipo es un visitante (1)
    public void SetVisitante(int visitante) {
	this.visitante = visitante;
    }

    //@brief asigna los partidos ganados
    public void SetPartidosGanados(int partidosGanados) {
	this.partidosGanados = partidosGanados;
    }

    //@brief asigna lospartidos perdidos
    public void SetPartidosPerdidos(int partidosPerdidos) {
	this.partidosPerdidos = partidosPerdidos;
    }

    //@brief asigna el numero de identificacion del equipo
    public void SetEquipoID(int equipoID) {
	this.equipoID = equipoID;
    }

    //@brief asigna el numero de identificacion del entrenador
    public void SetEntrenadorID(int entrenadorID) {
	this.entrenadorID = entrenadorID;
    }

    //@brief Suma una victoria al equipo
    public void sumarVictoria() {
	this.partidosGanados++;
    }

    //@brief Suma una derrota al equipo
    public void sumarDerrota() {
	this.partidosPerdidos++;
    }

    //EquipoID
    //Nombre
    //Categoria
    //partidosganados
    //partidosperdidos
    //entrenadorID
    //visitante
    public boolean AltaEquipo() {
	conectar cc = new conectar();
	Connection cn = cc.conexion();
	String sql = "INSERT INTO equipo (nombre,categoria,partidosGanados,partidosPerdidos,entrenadorID,visitante,horario) VALUES (?,?,?,?,?,?,?)";

	try {
	    PreparedStatement pst = cn.prepareStatement(sql);
	    pst.setString(1, this.nombre);
	    pst.setString(2, this.categoria);
	    pst.setInt(3, this.partidosGanados);
	    pst.setInt(4, this.partidosPerdidos);
	    pst.setInt(5, this.entrenadorID);
	    pst.setInt(6, this.visitante);
	    pst.setString(7, this.horario);

	    int n = pst.executeUpdate();
	    if (n > 0) {
		//JOptionPane.showMessageDialog(null, "Equipo  guardado");
		return true;
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Equipo.class.getName()).log(Level.SEVERE, null, ex);
	}
	return false;
    }

    //@brief devuelve true si el equipo esta, false en cualquier otro caso
    public boolean ConsultaEquipo(String nombre) {
	try {
	    conectar cc = new conectar();
	    Connection cn = cc.conexion();
	    String sql = "select * from equipo where nombre = '" + nombre + "'";
	    Statement stm = cn.createStatement();
	    ResultSet rs = stm.executeQuery(sql);
	    int n = 0;
	    while (rs.next()) {
		n++;
		this.equipoID = rs.getInt("equipo.equipoID");
		this.nombre = rs.getString("equipo.nombre");
		this.categoria = rs.getString("equipo.categoria");
		this.partidosGanados = rs.getInt("equipo.partidosGanados");
		this.partidosPerdidos = rs.getInt("equipo.partidosPerdidos");
		this.entrenadorID = rs.getInt("equipo.entrenadorID");
		this.visitante = rs.getInt("equipo.visitante");
		this.horario = rs.getString("equipo.horario");
	    }
	    if (n > 0) {
		//JOptionPane.showMessageDialog(null, "Equipo  encontrado");
		return true;
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Entrenador.class.getName()).log(Level.SEVERE, null, ex);
	}
	return false;
    }

    //@brief devuelve true si el equipo esta, false en cualquier otro caso
    public String[] GetJugadores(int id_equipo) {
	String[] alumnos;
	try {
	    conectar cc = new conectar();
	    Connection cn = cc.conexion();
	    String sql = "select * from alumno_equipo,persona where alumno_equipo.idalumno=persona.id and alumno_equipo.idequipo='" + id_equipo + "'";
	    Statement stm = cn.createStatement();
	    ResultSet rs = stm.executeQuery(sql);
	    int n = 0;
	    //Contamos los alumnos
	    while (rs.next()) {
		n++;
	    }
	    rs.first();

	    alumnos = new String[n];

	    int i = 0;
	    do{
		if(n>0){
		alumnos[i] = rs.getString("persona.nombre") + " " + rs.getString("persona.apellidos");
		}
		i++;
	    }while (rs.next());
	    if (n > 0) {
		return alumnos;
	    }
	    if (n > 0) {
		//JOptionPane.showMessageDialog(null, "Equipo  encontrado");
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Entrenador.class.getName()).log(Level.SEVERE, null, ex);
	}
	return null;
    }

    public boolean BajaEquipo(int equipoID) {
	conectar cc = new conectar();
	Connection cn = cc.conexion();
	String sql = "delete from equipo where equipoID = ?";
	try {
	    PreparedStatement pst = cn.prepareStatement(sql);
	    pst.setInt(1, equipoID);
	    int n = pst.executeUpdate();
	    if (n > 0) {
		//JOptionPane.showMessageDialog(null, "Equipo borrado ");
		return true;
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Equipo.class.getName()).log(Level.SEVERE, null, ex);
	}
	return false;
    }

    /*private String categoria;
     private int equipoID;
     private int entrenadorID;
     private String nombre;
     private int partidosGanados;
     private int partidosPerdidos;
     private int visitante;
     private String horario;*/
    public boolean ModificarEquipo(int equipoID, String categoria, String nombre, int partidosGanados, int partidosPerdidos, int entrenadorID, int visitante, String horario) {
	conectar cc = new conectar();
	Connection cn = cc.conexion();
	String sql = "UPDATE equipo SET nombre=?,categoria=?,partidosGanados=?,partidosPerdidos=?,entrenadorID=?,visitante=?,horario=? WHERE equipoID='" + equipoID + "'";
	try {
	    PreparedStatement pst = cn.prepareStatement(sql);
	    pst.setString(1, nombre);
	    pst.setString(2, categoria);
	    pst.setInt(3, partidosGanados);
	    pst.setInt(4, partidosPerdidos);
	    pst.setInt(5, entrenadorID);
	    pst.setInt(6, visitante);
	    pst.setString(7, horario);
	    int n = pst.executeUpdate();
	    if (n > 0) {
		//JOptionPane.showMessageDialog(null, "Equipo modificado ");
		return true;
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Equipo.class.getName()).log(Level.SEVERE, null, ex);
	}
	return false;
    }

    public String[][] GetEquipos(String categoria) {
	String[][] equipos = null;

	try {
	    conectar cc = new conectar();
	    Connection cn = cc.conexion();
	    String sql = "SELECT * FROM equipo WHERE equipo.categoria='" + categoria + "'";
	    Statement stm = cn.createStatement();
	    ResultSet rs = stm.executeQuery(sql);
	    int contador = 0;
	    while (rs.next()) {
		contador++;
	    }
	    rs.first();
	    equipos = new String[contador][2];
	    System.out.println(sql);
	    contador = 0;

	    while (rs.next()) {
		if (contador == 0) {
		    rs.first();
		}
		equipos[contador][0] = (rs.getString("equipo.equipoID"));
		equipos[contador][1] = (rs.getString("equipo.nombre") + ":  " + rs.getString("equipo.horario"));
		contador++;
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Entrenador.class.getName()).log(Level.SEVERE, null, ex);
	}
	return equipos;
    }
}
